﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Dados;
using System.ComponentModel;
namespace Negocios
{
    [DataObject]
    public class GeneroBLL
    {
        
        [DataObjectMethodAttribute(DataObjectMethodType.Insert, true)]
        public bool Inserir(Genero g)
        {
            try
            {
                return GeneroDAL.Insere(g.Nome, g.Tipo);
            }
            catch (Exception e)
            {
                throw new SystemException("Erro ao inserir entidade" + g.Nome);
            }
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Update, true)]
        public bool Atualizar(Genero g)
        {
            try
            {
                return GeneroDAL.Atualiza(g.Codigo, g.Nome, g.Tipo);
            }
            catch (Exception e)
            {
                throw new SystemException("Erro ao atualizar entidade" + g.Nome);
            }
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Delete, true)]
        public bool Remover(Genero g)
        {
            try
            {               
                return GeneroDAL.Remove(g.Codigo);
            }
            catch (Exception e)
            {
                throw new Exception("Erro ao remover entidade" + g.Nome);
            }
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
        public Genero Consultar(int codigo)
        {
            DSMPTUDO.T_GENERODataTable generoDT = GeneroDAL.ConsultaPorCodigo(codigo);
            if(generoDT.Count == 1)
                return new Genero(codigo, generoDT[0].tx_nome, generoDT[0].nr_tipo);
            return null;
        }

        [DataObjectMethodAttribute(DataObjectMethodType.Select, true)]
        public static List<Genero> ConsultarTodos()
        {
            List<Genero> lista = new List<Genero>();
            DSMPTUDO.T_GENERODataTable generoDT = GeneroDAL.ConsultaTodos();


            for (int i = 0; i < generoDT.Count; i++)
            {
                lista.Add(new Genero(generoDT[i].nr_codigo, generoDT[i].tx_nome, generoDT[i].nr_tipo));
            }
            return lista;
        }

    }
}
